package com.swotxu.mall.member.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.swotxu.common.utils.PageUtils;
import com.swotxu.mall.member.entity.MemberEntity;
import com.swotxu.mall.member.exception.ExistException;
import com.swotxu.mall.member.exception.MemberLoginException;
import com.swotxu.mall.member.vo.MemberLoginVo;
import com.swotxu.mall.member.vo.MemberRegistVo;
import com.swotxu.mall.member.vo.SocialUser;

import java.util.Map;

/**
 * 会员
 *
 * @author swotxu
 * @email mr_xudada@163.com
 * @date 2020-12-12 18:51:41
 */
public interface MemberService extends IService<MemberEntity> {

    PageUtils queryPage(Map<String, Object> params);

    /**
     * 注册用户
     * @param memberRegistVo    注册用户实体
     */
    void regist(MemberRegistVo memberRegistVo);

    /**
     * 检查邮箱是否重复
     * @param email     邮箱
     * @throws ExistException   校验若存在重复，抛出存在异常
     */
    void checkEmailUnique(String email) throws ExistException;
    /**
     * 检查手机号是否重复
     * @param mobile    手机号
     * @throws ExistException   校验若存在重复，抛出存在异常
     */
    void checkMobileUnique(String mobile) throws ExistException;
    /**
     * 检查用户名是否重复
     * @param username  用户名
     * @throws ExistException   校验若存在重复，抛出存在异常
     */
    void checkUsernameUnique(String username) throws ExistException;

    /**
     * 用户登录
     * @param loginVo
     * @return
     * @throws MemberLoginException   登陆失败，抛出异常
     */
    MemberEntity login(MemberLoginVo loginVo) throws MemberLoginException;

    /**
     * 社交登录
     * @param socialUser
     * @return
     * @throws MemberLoginException   登陆失败，抛出异常
     */
    MemberEntity login(SocialUser socialUser) throws MemberLoginException;
}

